/**
 * @addtogroup hj1239_chl_param_if
 * hj1239_chl_param_if
 * @{
 */
/**
 * @file        hj1239_chl_param_if.h
 * @brief       XXXX
 * @note        XXXX
 * @author      靳普诏(puzhao.jin@hopechart.com)
 * @date        2023/10/18
 * @version     1.0

 * @par         修改日志
 * <table>
 * <tr><th>Date         <th>Version     <th>Author      <th> Description
 * <tr><td>2023/10/18   <td>1.0         <td>靳普诏       <td> 创建初始版本
 * @copyright 杭州鸿泉物联网技术股份有限公司
 */

#ifndef _BSC_HJ1239_CHL_PARAM_IF_H_
#define _BSC_HJ1239_CHL_PARAM_IF_H_

#include "ofc/ofc_types.h"

#ifdef __cplusplus
extern "C"
{
#endif


enum TBsHj1239ChlParamIdTag
{
    kHjChlParamIdAllowLogin = 0,  ///< UInt8 权限: 读写  登入许可。0：禁止；1：允许；   
    kHjChlParamIdLoginSeq = 1,  ///< UInt32 权限: 读写  登入流水号。车载终端每登录一次，登入流水号自动加1，从1开始循环累加，最大值为65531，循环周期为天   
    kHjChlParamIdMsgSeq = 2,  ///< UInt32 权限: 读写  消息流水号。以天为单位，每包实时信息流水号唯一，从i开始累加   
    kHjChlParamIdConnectHost = 3,  ///< Mem 权限: 只读  连接平台IP地址   
    kHjChlParamIdConnectPort = 4,  ///< UInt16 权限: 只读  连接平台IP端口   
    kHjChlParamIdReconnectTime = 5,  ///< UInt32 权限: 只读  连接失败到重连时间。单位:s   
    kHjChlParamIdConnectTimeOut = 6,  ///< UInt32 权限: 只读  连接超时时间。单位:s   
    kHjChlParamIdRealDataCmdMask = 7,  ///< UInt32 权限: 读写  实时数据采集使能掩码。bit0：保留、bit1：0x01Obd、bit2：0x02DPF/SCR、bit3：0x03TWC无NOx、bit4：0x04混动附加、bit5：0x05TWC有NOx、bit6：0x80补充数据流   
    kHjChlParamIdDataSteamCollectInterval = 8,  ///< UInt32 权限: 只读  数据流采集间隔。单位：s   
    kHjChlParamIdDataSteamReportInterval = 9,  ///< UInt32 权限: 只读  数据流上报间隔。单位：s   
    kHjChlParamIdReportDataStreamNums = 10,  ///< UInt8 权限: 只读  数据流单次上报最大条数。   
    kHjChlParamIdSuppDataCollectInterval = 11,  ///< UInt32 权限: 只读  补充数据采集间隔。对应0x80消息数据。单位：s   
    kHjChlParamIdSuppDataSteamReportInterval = 12,  ///< UInt32 权限: 只读  补充数据上报间隔。对应0x80消息数据。单位：s   
    kHjChlParamIdReportSuppDataNums = 13,  ///< UInt8 权限: 只读  补充数据单次上报最大条数。   
    kHjChlParamIdIsRecorded = 14,  ///< UInt8 权限: 读写  备案完成. 0：备案无效；1：备案成功
    kHjChlParamIdSignature = 15,  ///< UInt8 权限: 只读  OBD 签名配置.  0：不签名；1：使能签名
    kHjChlParamIdEncryptType = 16,  ///< UInt8 权限: 只读  OBD 加密类型   
    kHjChlParamIdReportDisable = 17,  ///< UInt8 权限: 读写  OBD 上报关闭开关   0：正常执行上报；1：关闭上报动作
    kHjChlParamIdHistroyReportDuration = 18,  ///< UInt8 权限: 只读  OBD 历史数据判断时间。单位：s   [功能未实现]
    kHjChlParamIdTriggerAlarm = 19,  ///< UInt8 权限: 读写  1:触发防拆报警; 0:数据发送完成或不需要报警.
    kHjChlParamIdMax,
};
typedef enum TBsHj1239ChlParamIdTag TBsHj1239ChlParamId;

typedef struct IBsHj1239ChlParamTag IBsHj1239ChlParam;

/**
 * 读取数据
 * @param id            参数id
 * @param *r_data       读取数据缓存地址
 * @param r_data_size   读取数据缓存大小
 * @return >= 0 成功读取数据大小
 *         < 0  失败 
 */
typedef Int32 (* IBsHj1239ChlParamDoReadData)(IBsHj1239ChlParam *sender, TBsHj1239ChlParamId id, void *r_data, UInt32 r_data_size);


/**
 * 写入数据
 * @param id            参数id
 * @param *i_data       写入数据地址
 * @param i_data_size   写入数据大小
 * @return >= 0 成功写入数据大小
 *         < 0  失败
 */
typedef Int32 (* IBsHj1239ChlParamDoWriteData)(IBsHj1239ChlParam *sender, TBsHj1239ChlParamId id, const void *i_data, UInt32 i_data_size);




struct IBsHj1239ChlParamTag
{
    IBsHj1239ChlParamDoReadData DoReadParam;
    IBsHj1239ChlParamDoWriteData DoWriteParam;

};


/**
 * 读取数据
 * @param *self         接口指针
 * @param id            参数id
 * @param *r_data       读取数据缓存地址
 * @param r_data_size   读取数据缓存大小
 * @return >= 0 成功读取数据大小
 *         < 0  失败 
 */
Int32 IBsHj1239ChlParamRead(IBsHj1239ChlParam *self, TBsHj1239ChlParamId id, void *r_data, UInt32 r_data_size);


/**
 * 写入数据
 * @param *self         接口指针
 * @param id            参数id
 * @param *i_data       写入数据地址
 * @param i_data_size   写入数据大小
 * @return >= 0 成功写入数据大小
 *         < 0  失败
 */
Int32 IBsHj1239ChlParamWrite(IBsHj1239ChlParam *self, TBsHj1239ChlParamId id, const void *i_data, UInt32 i_data_size);



#ifdef __cplusplus
}  ///< extern "C"
#endif

#endif  ///< _BSC_HJ1239_CHL_PARAM_IF_H_

/**
 * @}  Generated on "2023-10-18 14:22:04" by the tool "gen_hq_file.py >> V20230509_1" 
 */
